Oracle Goleden Gate 复制存储过程
1.1. 关于存储过程复制
ogg 允许复制 PL/SQL 过程.避免了传输这些操作生成的大批量数据.存储过程复制使用dirctionary 的更改来实现.这些directionary 控制用户的会话行为和 对象.
过程复制与create ,alter 和drop 语句的同步无关,而是复制调用 存储过程的调用.如:
CALL procedure_name(arg1, arg2, ...);
exec procedure_name(arg1, arg2, ...)
如果使用存储过程复制,则需要满足以下条件:
- ogg 12.3 以上的集成模式复制和extract 功能.
- 系统提供
- DML 和DDL 的结合系统提供的包使用.
1.2. 概述
复制过程调用时,确保记录封装乐足够的信息.
使用ogg 过程调用复制,需要启用一种内置机制标识和优化启用过程.
PL/SQL pargmas 用于指定复制哪些调用的过程.当pragma 指定时,启动或回调logminer 时,回调函数返回调用的名称和参数.并指出调用是否成功.logminer 使用回调信息增强redo 日志信息.对于支持的调用信息,调用的过程将不会生成redo ,只是再目标端重新执行命令.
对于trail 记录文件 启用一个新的标识 ,用来标识过程复制.这个跟踪记录利用现有的trail .将参数传递给PL/SQL 过程.对于LOB ,数据以块的形式传递.由于trail 里包含足够的信息,可以在目标闪重新执行存储过程.
1.3. 启用复制存储调用
默认情况下禁用过程复制.可以使用 TRANLOGOPTIONS 选项的 enable_programural_replication 设置为yes 启用.
当启用复制存储调用选项时,将一直保持打开状态,且不能被禁用.
如果再Oracle database vault 环境中使用ogg 复制存储调用功能,则需要设置适当权限.
启用步骤:
- 确保出处于无触发器模式,
- dblogin 以oggadmin 用户连接到源数据库.
- 设置
TRANLOGOPTIONS参数设置为yes.
TRANLOGOPTIONS INTEGRATEDPARAMS (ENABLE_PROCEDURAL_REPLICATION Y)
1.4. 确认是否打开过程复制
使用 DMS_GOLDENGATE_ADM 包中的 gg_processdure_replication_on 函数来确定.
要启用复制存储调用复制:
-
以sys 身份连接到数据库.
-
执行
gg_processdure_replication_on函数
SET SERVEROUTPUT ON
DECLARE
on_or_off NUMBER;
BEGIN
on_or_off := DBMS_GOLDENGATE_ADM.GG_PROCEDURE_REPLICATION_ON;
IF on_or_off=1 THEN
DBMS_OUTPUT.PUT_LINE('Oracle GoldenGate procedural replication is ON.');
ELSE
DBMS_OUTPUT.PUT_LINE('Oracle GoldenGate procedural replication is OFF.');
END IF;
END;
/
1.5. 启用和禁用补充日志记录
ogg 提供乐ggsci 命令,允许您启用或禁用过程补充日志记录.
启用补充日志记录.
- dblogin 用户 ggadmin .
- 增加过程附加日志.
ADD PROCEDURETRANDATA
禁用附加日志:
DELETE PROCEDURETRANDATA
查看附加日志:
INFO PROCEDURETRANDATA
1.6. 过滤复制存储过程调用
可以使用参数指定包含或者排除哪些存储过程复制.
使用特性组对包和过程进行分组.
再存储过程参数中,INCLUDE 和 EXCLUDE 指定筛选的开头.由这些参数指定包含或排除存储过程.筛选字句必须由 INCLUDE ALL_SUPPORTED 或 EXCLUDE ALL_SUPPORTED 关键字组成. EXCLUDE 有限级高于包含相同条件的 INCLUDE 字句.
注意:复制Oracle Strams Advanced Queue(AQ) 存储过程时,必须再参数文件中使用RULE 选项.
PROCEDURE INCLUDE FEATURE ALL_SUPPORTED
or
PROCEDURE INCLUDE FEATURE AQ, RULE
如果没有 选项规则,请不要使用 PROCEDURE INCLUDE .
1.6.1. 包含系统所有的存储过程
- 连接到源数据库
EXTRACT edba
USERIDALIAS admin_dbA DOMAIN ORADEV
- 创建trail 文件
EXTTRAIL ea
- 添加参数文件
TRANLOGOPTIONS INTEGRATEDPARAMS (ENABLE_PROCEDURAL_REPLICATION Y)
- 添加参数文件
PROCEDURE INCLUDE FEATURE ALL_SUPPORTED
- 排除所有包
- 连接到数据库
REPLICAT rdba
- 登录数据库
USERIDALIAS admin_dbBDOMAIN ORADEV
3.排除所有存储过程
PROCEDURE EXCLUDE FEATURE RLS
1.7. 处理存储过程错误
当存储过程错误发生时, 使用 programror 参数配置replciat 行为.默认情况下如果错误发生则replicat 将会终止,使用以下步骤处理错误.
- 连接到数据库
REPLICAT rdba
USERIDALIAS admin_dbBDOMAIN ORADEV
- 排除报错的存储过程.
PROCEDURE EXCLUDE FEATURE RLS
- 处理错误参数
REPERROR (PROCEDURE, DISCARD)
1.8. 查询受支持的存储过程
COLUMN OWNER FORMAT A10
COLUMN PACKAGE_NAME FORMAT A15
COLUMN PROCEDURE_NAME FORMAT A15
COLUMN MIN_DB_VERSION FORMAT A14
COLUMN EXCLUSION_RULE_EXISTS FORMAT A14
SELECT OWNER,
PACKAGE_NAME,
PROCEDURE_NAME,
MIN_DB_VERSION,
EXCLUSION_RULE_EXISTS
FROM DBA_GG_SUPPORTED_PROCEDURES;`
1.9. 监控ogg 存储过程复制
| View | Description |
|---|---|
DBA_GG_SUPPORTED_PACKAGES |
Provides details about supported packages for Oracle GoldenGate procedural replication.When a package is supported and Oracle GoldenGate procedural replication is on, calls to subprograms in the package are replicated. |
DBA_GG_SUPPORTED_PROCEDURES |
Provides details about the procedures that are supported for Oracle GoldenGate procedural replication. |
DBA_GG_PROC_OBJECT_EXCLUSION |
Provides details about all database objects that are on the exclusion list for Oracle GoldenGate procedural replication.A database object is added to the exclusion list using the INSERT_PROCREP_EXCLUSION_OBJ procedure in the DBMS_GOLDENGATE_ADM package. When a database object is on the exclusion list, execution of a subprogram n the package is not replicated if the subprogram operates on the excluded object. |